﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Nature
{
    public interface IIdealGasMixture
    {
        Temperature Temperature { get; }

        Pressure Pressure { get; }

        Viscosity Viscosity { get; }

        Diffusivity Diffusivity { get; }

        ThermalConductivity ThermalConductivity { get; }

        MassConcentration MassConcentration { get; }

        Velocity SpeedOfSound { get; }

        void Update(IMixtureDefinition mixtureDefinition);
    }

    public partial class IdealGasMixture : IIdealGasMixture
    {

        #region IIdealGasMixture Members

        Temperature IIdealGasMixture.Temperature
        {
            get { return new Temperature(this.Temperature); }
        }

        Pressure IIdealGasMixture.Pressure
        {
            get { return new Pressure(this.Pressure); }
        }

        Viscosity IIdealGasMixture.Viscosity
        {
            get { return new Viscosity(this.Viscosity); }
        }

        Diffusivity IIdealGasMixture.Diffusivity
        {
            get { return new Diffusivity(this.Diffusivity); }
        }

        ThermalConductivity IIdealGasMixture.ThermalConductivity
        {
            get { return new ThermalConductivity(this.ThermalConductivity); }
        }

        MassConcentration IIdealGasMixture.MassConcentration
        {
            get { return new MassConcentration(this.MassDensity); }
        }

        Velocity IIdealGasMixture.SpeedOfSound
        {
            get { return new Velocity(this.SpeedOfSound); }
        }

        #endregion
    }
}
